// 经典回文字符串
// 需要对字符串进行处理,将非数字字母字符都删除
// 当然,我们可以结合c++的stl库中的string进行使用,会方便不少
// 该题使用了双指针法,时间复杂度为O(1)
// 创建双指针,然后遍历
// 当遇到不符合的字符自动进行跳过,合适再进行比对
// 如果不符合判断条件,直接返回false
// 当遍历完了之后,直接返回true

class Solution 
{
public:

    bool isPalindrome(string s) 
    {

        int n = s.size () ;

        int left = 0 , right = n - 1 ;

        while (left < right)
        {

            while (left < right && !isalnum (s [left]))
            {

                left++ ;

            }

            while (left < right && !isalnum (s [right]))
            {

                right-- ;
                
            }

            if (left < right && tolower (s [left]) != tolower (s [right]))
            {

                return false ;

            }

            left++ ;

            right-- ;

        }

        return true ;
        
    }

};